37 research outputs found
The Clocks They Are Adjunctions: Denotational Semantics for Clocked Type Theory
Clocked Type Theory (CloTT) is a type theory for guarded recursion useful for
programming with coinductive types, allowing productivity to be encoded in
types, and for reasoning about advanced programming language features using an
abstract form of step-indexing. CloTT has previously been shown to enjoy a
number of syntactic properties including strong normalisation, canonicity and
decidability of type checking. In this paper we present a denotational
semantics for CloTT useful, e.g., for studying future extensions of CloTT with
constructions such as path types.
The main challenge for constructing this model is to model the notion of
ticks used in CloTT for coinductive reasoning about coinductive types. We build
on a category previously used to model guarded recursion, but in this category
there is no object of ticks, so tick-assumptions in a context can not be
modelled using standard tools. Instead we show how ticks can be modelled using
adjoint functors, and how to model the tick constant using a semantic
substitution
Denotational semantics for guarded dependent type theory
We present a new model of Guarded Dependent Type Theory (GDTT), a type theory
with guarded recursion and multiple clocks in which one can program with, and
reason about coinductive types. Productivity of recursively defined coinductive
programs and proofs is encoded in types using guarded recursion, and can
therefore be checked modularly, unlike the syntactic checks implemented in
modern proof assistants.
The model is based on a category of covariant presheaves over a category of
time objects, and quantification over clocks is modelled using a presheaf of
clocks. To model the clock irrelevance axiom, crucial for programming with
coinductive types, types must be interpreted as presheaves orthogonal to the
object of clocks. In the case of dependent types, this translates to a lifting
condition similar to the one found in homotopy theoretic models of type theory,
but here with an additional requirement of uniqueness of lifts. Since the
universes defined by the standard Hofmann-Streicher construction in this model
do not satisfy this property, the universes in GDTT must be indexed by contexts
of clock variables. We show how to model these universes in such a way that
inclusions of clock contexts give rise to inclusions of universes commuting
with type operations on the nose.Comment: This is the third version of the paper representing a minor revision
over the second version. The paper has 40 page
Diamonds are not forever: Liveness in reactive programming with guarded recursion
When designing languages for functional reactive programming (FRP) the main
challenge is to provide the user with a simple, flexible interface for writing
programs on a high level of abstraction while ensuring that all programs can be
implemented efficiently in a low-level language. To meet this challenge, a new
family of modal FRP languages has been proposed, in which variants of Nakano's
guarded fixed point operator are used for writing recursive programs
guaranteeing properties such as causality and productivity. As an apparent
extension to this it has also been suggested to use Linear Temporal Logic (LTL)
as a language for reactive programming through the Curry-Howard isomorphism,
allowing properties such as termination, liveness and fairness to be encoded in
types. However, these two ideas are in conflict with each other, since the
fixed point operator introduces non-termination into the inductive types that
are supposed to provide termination guarantees.
In this paper we show that by regarding the modal time step operator of LTL a
submodality of the one used for guarded recursion (rather than equating them),
one can obtain a modal type system capable of expressing liveness properties
while retaining the power of the guarded fixed point operator. We introduce the
language Lively RaTT, a modal FRP language with a guarded fixed point operator
and an `until' type constructor as in LTL, and show how to program with events
and fair streams. Using a step-indexed Kripke logical relation we prove
operational properties of Lively RaTT including productivity and causality as
well as the termination and liveness properties expected of types from LTL.
Finally, we prove that the type system of Lively RaTT guarantees the absence of
implicit space leaks
Ticking clocks as dependent right adjoints: Denotational semantics for clocked type theory
Clocked Type Theory (CloTT) is a type theory for guarded recursion useful for
programming with coinductive types, allowing productivity to be encoded in
types, and for reasoning about advanced programming language features using an
abstract form of step-indexing. CloTT has previously been shown to enjoy a
number of syntactic properties including strong normalisation, canonicity and
decidability of the equational theory. In this paper we present a denotational
semantics for CloTT useful, e.g., for studying future extensions of CloTT with
constructions such as path types.
The main challenge for constructing this model is to model the notion of
ticks on a clock used in CloTT for coinductive reasoning about coinductive
types. We build on a category previously used to model guarded recursion with
multiple clocks. In this category there is an object of clocks but no object of
ticks, and so tick-assumptions in a context can not be modelled using standard
tools. Instead we model ticks using dependent right adjoint functors, a
generalisation of the category theoretic notion of adjunction to the setting of
categories with families. Dependent right adjoints are known to model
Fitch-style modal types, but in the case of CloTT, the modal operators
constitute a family indexed internally in the type theory by clocks. We model
this family using a dependent right adjoint on the slice category over the
object of clocks. Finally we show how to model the tick constant of CloTT using
a semantic substitution.
This work improves on a previous model by the first two named authors which
not only had a flaw but was also considerably more complicated.Comment: 31 pages. Second version is a minor revision. arXiv admin note: text
overlap with arXiv:1804.0668
Greatest HITs: Higher Inductive Types in Coinductive Definitions via Induction under Clocks
Guarded recursion is a powerful modal approach to recursion that can be seen
as an abstract form of step-indexing. It is currently used extensively in
separation logic to model programming languages with advanced features by
solving domain equations also with negative occurrences. In its multi-clocked
version, guarded recursion can also be used to program with and reason about
coinductive types, encoding the productivity condition required for recursive
definitions in types. This paper presents the first type theory combining
multi-clocked guarded recursion with the features of Cubical Type Theory, as
well as a denotational semantics. Using the combination of Higher Inductive
Types (HITs) and guarded recursion allows for simple programming and reasoning
about coinductive types that are traditionally hard to represent in type
theory, such as the type of finitely branching labelled transition systems. For
example, our results imply that bisimilarity for these imply path equality, and
so proofs can be transported along bisimilarity proofs. Among our technical
contributions is a new principle of induction under clocks. This allows
universal quantification over clocks to commute with HITs up to equivalence of
types, and is crucial for the encoding of coinductive types. Such commutativity
requirements have been formulated for inductive types as axioms in previous
type theories with multi-clocked guarded recursion, but our present formulation
as an induction principle allows for the formulation of general computation
rules.Comment: 29 page
The enriched effect calculus: syntax and semantics
This paper introduces the enriched effect calculus, which extends established type theories for computational effects with primitives from linear logic. The new calculus provides a formalism for expressing linear aspects of computational effects; for example, the linear usage of imperative features such as state and/or continuations. The enriched effect calculus is implemented as an extension of a basic effect calculus without linear primitives, which is closely related to Moggi’s computational metalanguage, Filinski’s effect PCF and Levy’s call-by-push-value. We present syntactic results showing: the fidelity of the behaviour of the linear connectives of the enriched effect calculus; the conservativity of the enriched effect calculus over its non-linear core (the effect calculus); and the non-conservativity of intuitionistic linear logic when considered as an extension of the enriched effect calculus. The second half of the paper investigates models for the enriched effect calculus, based on enriched category theory. We give several examples of such models, relating them to models of standard effect calculi (such as those based on monads), and to models of intuitionistic linear logic. We also prove soundness and completeness.